@@ -3,11 +3,13 @@ |
||
| 3 | 3 |
from __future__ import division |
| 4 | 4 |
|
| 5 | 5 |
import monetary |
| 6 |
+from django.conf import settings |
|
| 7 |
+from django.db.models import Q |
|
| 6 | 8 |
from django_logit import logit |
| 7 | 9 |
from django_response import response |
| 8 | 10 |
from paginator import pagination |
| 9 | 11 |
|
| 10 |
-from mch.models import AdministratorInfo, ModelInfo |
|
| 12 |
+from mch.models import AdministratorInfo, ModelInfo, ModelCameraBodyInfo |
|
| 11 | 13 |
from utils.error.errno_utils import AdministratorStatusCode, ProductModelStatusCode |
| 12 | 14 |
|
| 13 | 15 |
|
@@ -155,3 +157,25 @@ def model_list(request): |
||
| 155 | 157 |
'count': count, |
| 156 | 158 |
'left': left, |
| 157 | 159 |
}) |
| 160 |
+ |
|
| 161 |
+ |
|
| 162 |
+@logit |
|
| 163 |
+def model_cameras(request): |
|
| 164 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 165 |
+ |
|
| 166 |
+ kw = request.POST.get('kw', '')
|
|
| 167 |
+ page = request.POST.get('page', 1)
|
|
| 168 |
+ num = request.POST.get('num', 20)
|
|
| 169 |
+ |
|
| 170 |
+ cameras = ModelCameraBodyInfo.objects.filter(brand_id=brand_id, status=True) |
|
| 171 |
+ if kw: |
|
| 172 |
+ cameras = cameras.filter(Q(model_name__contains=kw) | Q(model_full_name__contains=kw) | Q(camera_name__contains=kw)) |
|
| 173 |
+ count = cameras.count() |
|
| 174 |
+ cameras, left = pagination(cameras, page, num) |
|
| 175 |
+ cameras = [camera.data for camera in cameras] |
|
| 176 |
+ |
|
| 177 |
+ return response(200, 'Get Model Adaptive Camera List Success', u'获取型号适配机身列表成功', {
|
|
| 178 |
+ 'cameras': cameras, |
|
| 179 |
+ 'count': count, |
|
| 180 |
+ 'left': left, |
|
| 181 |
+ }) |
@@ -259,6 +259,7 @@ urlpatterns += [ |
||
| 259 | 259 |
url(r'^model/delete$', model_views.model_delete, name='model_delete'), |
| 260 | 260 |
url(r'^model/update$', model_views.model_update, name='model_update'), |
| 261 | 261 |
url(r'^model/list$', model_views.model_list, name='model_list'), |
| 262 |
+ url(r'^model/cameras$', model_views.model_cameras, name='model_cameras'), |
|
| 262 | 263 |
] |
| 263 | 264 |
|
| 264 | 265 |
urlpatterns += [ |
@@ -9,7 +9,7 @@ from django_models_ext import ProvinceShortModelMixin |
||
| 9 | 9 |
from pysnippets.strsnippets import strip |
| 10 | 10 |
|
| 11 | 11 |
from mch.models import (ActivityInfo, AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, |
| 12 |
- LatestAppInfo, LatestAppScreenInfo, ModelInfo, OperatorInfo, SaleclerkInfo) |
|
| 12 |
+ LatestAppInfo, LatestAppScreenInfo, ModelInfo, ModelCameraBodyInfo, OperatorInfo, SaleclerkInfo) |
|
| 13 | 13 |
from utils.redis.rshot import update_member_shot_data |
| 14 | 14 |
|
| 15 | 15 |
|
@@ -88,6 +88,10 @@ class ModelInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
||
| 88 | 88 |
update_member_shot_data() |
| 89 | 89 |
|
| 90 | 90 |
|
| 91 |
+class ModelCameraBodyInfoAdmin(DeleteModelAdmin, admin.ModelAdmin): |
|
| 92 |
+ list_display = ('brand_id', 'brand_name', 'model_name', 'model_full_name', 'camera_name', 'status', 'created_at', 'updated_at')
|
|
| 93 |
+ |
|
| 94 |
+ |
|
| 91 | 95 |
class ModelImageInfoAdmin(admin.ModelAdmin): |
| 92 | 96 |
list_display = ('model_id', 'model_name', 'image', 'url', 'position', 'status', 'created_at', 'updated_at')
|
| 93 | 97 |
list_filter = ('model_name', 'status')
|
@@ -201,6 +205,7 @@ admin.site.register(AdministratorInfo, AdministratorInfoAdmin) |
||
| 201 | 205 |
admin.site.register(OperatorInfo, OperatorInfoAdmin) |
| 202 | 206 |
admin.site.register(BrandInfo, BrandInfoAdmin) |
| 203 | 207 |
admin.site.register(ModelInfo, ModelInfoAdmin) |
| 208 |
+admin.site.register(ModelCameraBodyInfo, ModelCameraBodyInfoAdmin) |
|
| 204 | 209 |
# admin.site.register(ModelImageInfo, ModelImageInfoAdmin) |
| 205 | 210 |
admin.site.register(DistributorInfo, DistributorInfoAdmin) |
| 206 | 211 |
admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin) |
@@ -0,0 +1,33 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.27 on 2020-02-22 07:25 |
|
| 3 |
+from __future__ import unicode_literals |
|
| 4 |
+ |
|
| 5 |
+from django.db import migrations, models |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class Migration(migrations.Migration): |
|
| 9 |
+ |
|
| 10 |
+ dependencies = [ |
|
| 11 |
+ ('mch', '0042_auto_20200113_1832'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.CreateModel( |
|
| 16 |
+ name='ModelCameraBodyInfo', |
|
| 17 |
+ fields=[ |
|
| 18 |
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
| 19 |
+ ('status', models.BooleanField(db_index=True, default=True, help_text='Status', verbose_name='status')),
|
|
| 20 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
|
|
| 21 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
|
|
| 22 |
+ ('brand_id', models.CharField(blank=True, db_index=True, help_text='\u54c1\u724c\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='brand_id')),
|
|
| 23 |
+ ('brand_name', models.CharField(blank=True, help_text='\u54c1\u724c\u540d\u79f0', max_length=255, null=True, verbose_name='brand_name')),
|
|
| 24 |
+ ('model_name', models.CharField(blank=True, help_text='\u578b\u53f7\u540d\u79f0', max_length=32, null=True, verbose_name='model_name')),
|
|
| 25 |
+ ('model_full_name', models.CharField(blank=True, help_text='\u578b\u53f7\u5168\u540d\u79f0', max_length=255, null=True, verbose_name='model_full_name')),
|
|
| 26 |
+ ('camera_name', models.CharField(blank=True, help_text='\u673a\u8eab\u540d\u79f0', max_length=255, null=True, verbose_name='camera_name')),
|
|
| 27 |
+ ], |
|
| 28 |
+ options={
|
|
| 29 |
+ 'verbose_name': '\u578b\u53f7\u673a\u8eab\u9002\u914d\u4fe1\u606f', |
|
| 30 |
+ 'verbose_name_plural': '\u578b\u53f7\u673a\u8eab\u9002\u914d\u4fe1\u606f', |
|
| 31 |
+ }, |
|
| 32 |
+ ), |
|
| 33 |
+ ] |
@@ -283,6 +283,31 @@ class ModelImageInfo(BaseModelMixin): |
||
| 283 | 283 |
} |
| 284 | 284 |
|
| 285 | 285 |
|
| 286 |
+class ModelCameraBodyInfo(BaseModelMixin): |
|
| 287 |
+ brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
|
| 288 |
+ brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |
|
| 289 |
+ |
|
| 290 |
+ model_name = models.CharField(_(u'model_name'), max_length=32, blank=True, null=True, help_text=u'型号名称') |
|
| 291 |
+ model_full_name = models.CharField(_(u'model_full_name'), max_length=255, blank=True, null=True, help_text=u'型号全名称') |
|
| 292 |
+ |
|
| 293 |
+ camera_name = models.CharField(_(u'camera_name'), max_length=255, blank=True, null=True, help_text=u'机身名称') |
|
| 294 |
+ |
|
| 295 |
+ class Meta: |
|
| 296 |
+ verbose_name = _(u'型号机身适配信息') |
|
| 297 |
+ verbose_name_plural = _(u'型号机身适配信息') |
|
| 298 |
+ |
|
| 299 |
+ def __unicode__(self): |
|
| 300 |
+ return unicode(self.pk) |
|
| 301 |
+ |
|
| 302 |
+ @property |
|
| 303 |
+ def data(self): |
|
| 304 |
+ return {
|
|
| 305 |
+ 'model_name': self.model_name, |
|
| 306 |
+ 'model_full_name': self.model_full_name, |
|
| 307 |
+ 'camera_name': self.camera_name, |
|
| 308 |
+ } |
|
| 309 |
+ |
|
| 310 |
+ |
|
| 286 | 311 |
class DistributorInfo(BaseModelMixin): |
| 287 | 312 |
brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) |
| 288 | 313 |
brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') |